package main
// import (
// 	"fmt"
// 	"encoding/json"
// )
// type Student struct{
// 	Id int
// 	Name string
// 	Gender string
// 	Sno string
// }
// func main(){
// 	// st:=Student{
// 	// 	Id:1212312,
// 	// 	Name:"zhangsan",
// 	// 	Gender:"male",
// 	// 	Sno:"s232323",
// 	// }
// 	// fmt.Println(st)
// 	// fmt.Printf("%#v\n",st)

// 	// //转化为json成员变量必须都是公有的
// 	// jsonByte,_:=json.Marshal(st)
// 	// //Marshel返回byte类型的数据
// 	// str:=string(jsonByte)
// 	// fmt.Println(str)
// 	str:=`{"Id":1212312,"Name":"zhangsan","Gender":"male","Sno":"s232323"}`
// 	//将json字符串转化为结构体
// 	//需要将字符串转化为切片 再调用json.Unmarshal
// 	var	stu Student
// 	json.Unmarshal([]byte(str),&stu)
// 	fmt.Printf("%#v\n",stu)
// 	//结构体标签

// }
// import (
// 	"fmt"
// 	"encoding/json"
// )

// //结构体标签  改变成员变量在json的大小写问题
// type Student struct{
// 	Id int `json:"id"`
// 	Name string `json:"name"`
// 	Age int `json:"ageee"`
// 	Sno string `json:"sno"`
// }
// func main(){
// 	stu:=Student{
// 		Id:122222,
// 		Name:"zhangsan",
// 		Age:67,
// 		Sno:"s56757",
// 	}
// 	jsonBytes,_:=json.Marshal(stu)
// 	str:=string(jsonBytes)
// 	fmt.Printf("%v\n",str)
// }

import(
	"fmt"
	"encoding/json"
)
type Class struct{
	Title string
	Students []Student
}
type Student struct{
	Id int
	Name string
	Gender string
}

func main(){
	c:=Class{
		Title:    "001班",
		Students:make([]Student,0),
	}
	for i:=1;i<=10;i++{
		s:=Student{
			Id:i,
			Name:fmt.Sprintf("stu_%d",i),
			Gender:"男",
		}
		c.Students=append(c.Students,s)
	}
	fmt.Printf("%v\n",c)
	fmt.Println("----------------------------")
	jsonBytes,err:=json.Marshal(c)
	if err!=nil{
		fmt.Println(err)
	}
	jsonStr:=string(jsonBytes)
	fmt.Println(jsonStr)
	fmt.Println("=============================")

	var class Class
	json.Unmarshal([]byte(jsonStr),&class)
	fmt.Printf("%#v\n",class)

}